package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.divemotor.ventarepuestosinternet.util.Constantes;

@Entity
@Table(name="REP_MOV_IMAGEN_REP_NUMERO_SA")
@NamedQueries({
	@NamedQuery(name="ImagenRepuestoNroSa.listarNumerosAdapter",
				query="SELECT imgr " +
					  "FROM ImagenRepuestoNroSa imgr " +
					  "WHERE imgr.imagenRepuestoNroSaPK.numIdImagenRepuesto = :numIdImagenRepuesto AND imgr.indEstado = 'A'")
})
public class ImagenRepuestoNroSa implements Serializable{
	
	private static final long serialVersionUID = 3827009320570018174L;
	
	@EmbeddedId
	private ImagenRepuestoNroSaPK imagenRepuestoNroSaPK;
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_USUARIO_CREACION",referencedColumnName="COD_ID_USUARIO" )
	private Usuario usuarioCreacion;
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_USUARIO_MODIFICACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioModificacion;
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_USUARIO_ELIMINACION",referencedColumnName="COD_ID_USUARIO")
	private Usuario usuarioEliminacion;
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_creacion")
	private Date fechaCreacion;
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_modificacion")
	private Date fechaModificacion;
	@Temporal(TemporalType.DATE)
	@Column(name = "fec_eliminacion")
	private Date fechaEliminacion;
	@Column(name = "IND_ESTADO ")
	private String indEstado;
	
	public ImagenRepuestoNroSa(){
		indEstado = Constantes.ESTADO_ACTIVO;
	}
	
	public ImagenRepuestoNroSa(Integer nroImgRpto, String nroCorrSa, String nroExtSa){
		indEstado = Constantes.ESTADO_ACTIVO;
		imagenRepuestoNroSaPK = new ImagenRepuestoNroSaPK(nroImgRpto, nroCorrSa, nroExtSa);
	}
	
	public ImagenRepuestoNroSaPK getImagenRepuestoNroSaPK() {
		return imagenRepuestoNroSaPK;
	}

	public void setImagenRepuestoNroSaPK(ImagenRepuestoNroSaPK imagenRepuestoNroSaPK) {
		this.imagenRepuestoNroSaPK = imagenRepuestoNroSaPK;
	}

	public Usuario getUsuarioCreacion() {
		return usuarioCreacion;
	}
	
	public void setUsuarioCreacion(Usuario usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}
	
	public Usuario getUsuarioModificacion() {
		return usuarioModificacion;
	}
	
	public void setUsuarioModificacion(Usuario usuarioModificacion) {
		this.usuarioModificacion = usuarioModificacion;
	}
	
	public Usuario getUsuarioEliminacion() {
		return usuarioEliminacion;
	}
	
	public void setUsuarioEliminacion(Usuario usuarioEliminacion) {
		this.usuarioEliminacion = usuarioEliminacion;
	}
	
	public Date getFechaCreacion() {
		return fechaCreacion;
	}
	
	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}
	
	public Date getFechaModificacion() {
		return fechaModificacion;
	}
	
	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}
	
	public Date getFechaEliminacion() {
		return fechaEliminacion;
	}
	
	public void setFechaEliminacion(Date fechaEliminacion) {
		this.fechaEliminacion = fechaEliminacion;
	}

	public String getIndEstado() {
		return indEstado;
	}

	public void setIndEstado(String indEstado) {
		this.indEstado = indEstado;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((imagenRepuestoNroSaPK == null) ? 0 : imagenRepuestoNroSaPK.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj){
			return true;
		}
		if (obj == null){
			return false;
		}
		if (getClass() != obj.getClass()){
			return false;
		}
		ImagenRepuestoNroSa other = (ImagenRepuestoNroSa) obj;
		if (imagenRepuestoNroSaPK == null) {
			if (other.imagenRepuestoNroSaPK != null){
				return false;
			}
		} else if (!imagenRepuestoNroSaPK.equals(other.imagenRepuestoNroSaPK)){
			return false;
		}
		return true;
	}
	
}
